From d138ed5c30bd43eea6051d74e1960729feb76f45 Mon Sep 17 00:00:00 2001 From: "robertlipe@gmail.com" Date: Mon, 14 May 2012 14:04:16 +0000 Subject: [PATCH] Fix problem in skytraq on 64-bit systems when in any hemisphere with negative coordinates. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4176 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/skytraq.c | 20 ++++++++++---------- gpsbabel/testo.d/classic-4.test | 6 ------ gpsbabel/testo.d/skytraq.test | 13 +++++++++++++ 3 files changed, 23 insertions(+), 16 deletions(-) create mode 100644 gpsbabel/testo.d/skytraq.test diff --git a/gpsbabel/skytraq.c b/gpsbabel/skytraq.c index e2e0ff4d7..0b49d449f 100644 --- a/gpsbabel/skytraq.c +++ b/gpsbabel/skytraq.c @@ -585,18 +585,18 @@ ECEF_to_LLA(double x, double y, long z, double *lat, double *lon, double *alt) } typedef struct { - short gps_week; - long gps_sec; - unsigned long x; - unsigned long y; - unsigned long z; + gbuint32 gps_week; + gbuint32 gps_sec; + gbint32 x; + gbint32 y; + gbint32 z; } full_item; typedef struct { - short dt; - short dx; - short dy; - short dz; + gbint16 dt; + gbint16 dx; + gbint16 dy; + gbint16 dz; } compact_item; struct full_item_frame { @@ -626,7 +626,7 @@ process_data_item(struct read_state *pst, const item_frame *pitem, int len) { int res = 0; double lat, lon, alt; - unsigned int ts; + gbint32 ts; int poi = 0; full_item f; compact_item c; diff --git a/gpsbabel/testo.d/classic-4.test b/gpsbabel/testo.d/classic-4.test index a85b1e2b2..2c4ef6a75 100755 --- a/gpsbabel/testo.d/classic-4.test +++ b/gpsbabel/testo.d/classic-4.test @@ -309,12 +309,6 @@ compare ${REFERENCE}/route/naviguide.gpx ${TMPDIR}/naviguide.gpx gpsbabel -i vpl -f ${REFERENCE}/track/vpl_reference.vpl -o gpx -F ${TMPDIR}/vpl_reference.gpx compare ${TMPDIR}/vpl_reference.gpx ${REFERENCE}/track/vpl_reference.gpx -# -# Skytraq logger tests -# -rm -f ${TMPDIR}/skytraq.* -gpsbabel -t -w -i skytraq-bin -f ${REFERENCE}/skytraq.bin -o gpx -F ${TMPDIR}/skytraq.gpx -compare ${TMPDIR}/skytraq.gpx ${REFERENCE}/skytraq.gpx # # Teletype tests # diff --git a/gpsbabel/testo.d/skytraq.test b/gpsbabel/testo.d/skytraq.test new file mode 100644 index 000000000..43bf890d1 --- /dev/null +++ b/gpsbabel/testo.d/skytraq.test @@ -0,0 +1,13 @@ +# +# Skytraq logger tests +# +rm -f ${TMPDIR}/skytraq.* +gpsbabel -t -w -i skytraq-bin -f ${REFERENCE}/skytraq.bin -o gpx -F ${TMPDIR}/skytraq.gpx +compare ${TMPDIR}/skytraq.gpx ${REFERENCE}/skytraq.gpx + +# +# The original was recorded in Germany, thus all coordinates are positive. +# This one is in North America and triggered a sign extension bug on 64-bit +# systems prior to revision 4176. +gpsbabel -t -w -i skytraq-bin -f ${REFERENCE}/skytraq-2.bin -o gpx -F ${TMPDIR}/skytraq-2.gpx +compare ${TMPDIR}/skytraq-2.gpx ${REFERENCE}/skytraq-2.gpx -- 2.30.2